void main() {
//
  print('********* 1. 字面量方式定义*************');
  // key需要加引号
  Map person = {"name": '张三', "age": 20};
  print(person);

//
  print('********* 2.类定义*************');
  Map p = new Map();
  p['name'] = '李四';
  p['age'] = '30';
  print(p);

  // 获取值需要使用中括号
  print(person["name"]);

//
  print('********* 3.属性 *************');
  person = {"name": '张三', "age": 20};

  print('==== values 获取值=======');
  print(person.values);
	print( person is Map); // true

  print('==== isEmpty 判断是否为空=======');
  print(person.isEmpty);

//
  print('********* 4.方法 *************');
  person = {"name": '张三', "age": 20};

  print('==== addAll 添加数据 =======');
  person.addAll({"sex": '男'});
  person['like'] = '女';
  print(person);

  print('==== remove 删除数据 =======');
  person = {"name": '张三', "age": 20};
  person.remove('age');
  print(person);

  print('==== containsValue 是否包含某个值 =======');
  person = {"name": '张三', "age": 20};
  print(person.containsValue(20));
  print(person.containsValue(0));

  print('==== forEach 接受两个参数 ==== ');
  person = {"name": '张三', "age": 20};
  person.forEach((key, value) {
    print('key:$key---value:$value');
  });

  /*
	?  条件运算符 （测试时不好使）
	as 类型转换
	is 类型判断
	.. 级联操作
 */
  print('==== 对象操作符 ? as is ..  ==== ');
  Map a = {};
  List b = [true, true];
  // ?
  // print(List?.getname());  // ? 不好使

  // is
  print([] is List);

  // as
  // a.insert(1, 2); //  insert 是list方法，所以报错
  // (a as List).insert(1, 2); //  将 a 识别为 list

  // ..
  a
    ..['name'] = '李四'
    ..['age'] = 40;
  b
    ..[0] = 1
    ..[1] = 2;
  print(a);
  print(b);
}
